package com.example.util;

import java.lang.reflect.Method;
import java.util.HashSet;
import java.util.Set;

public class ReflectUtil {
	
	/** 
	* 获取bean的set方法
	* @param fildName 字段名称
	* @param clazz  类
	* @return Method
	* @author liuhuaqing
	* @date 2018年8月17日上午9:12:51
	*/ 
	public static Method getSetterByFildName(String fildName,Class clazz)
	{
		
		Method[] methods=clazz.getMethods();
		for(int i=0;i<methods.length;i++)
		{
			String methodsName="set"+StringUtils.changeFirstChar(fildName, 1);
		   if(methodsName.equals(methods[i].getName()))
		   {
			   return methods[i];
		   }
		}
		return null;
	}
	
	/** 
	* 获取bean 的get方法
	* @param fildName
	* @param clazz
	* @return Method
	* @author liuhuaqing
	* @date 2018年8月17日上午9:14:41
	*/ 
	public static Method getGetterByFildName(String fildName,Class clazz)
	{
		
		Method[] methods=clazz.getMethods();
		for(int i=0;i<methods.length;i++)
		{
			String methodsName="get"+StringUtils.changeFirstChar(fildName, 1);
		   if(methodsName.equals(methods[i].getName()))
		   {
			   return methods[i];
		   }
		}
		return null;
	} 
	
	
	
	/**  
	* 获取所有字段
	* @param clazz
	* @return Set<String>
	* @author liuhuaqing
	* @date 2018年8月17日下午2:57:10
	*/ 
	public static Set<String> getFilds(Class clazz)
	{
		Set<String> filds=new HashSet<>();
		for(int i=0;i<clazz.getDeclaredFields().length;i++)
		{
			
			String fildName=clazz.getDeclaredFields()[i].toString();
			filds.add(fildName);
		}
		return filds;
	}
}
